﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework;

namespace JuegoBomberman.Vistas
{
    public class EnemigoVista
    {
        private List<IColisionable> enemigos;
        private Texture2D imagen;
        private Dictionary<String, Texture2D> coleccionImagenes;
        private Type cecilio = typeof(Cecilio);
        private Type lopezReggae = typeof(LopezReggae);
        private Type lopezReggaeAlado = typeof(LopezReggaeAlado);


        public EnemigoVista(List<IColisionable> enemigos)
        {
            this.enemigos = enemigos;
            coleccionImagenes = new Dictionary<string,Texture2D>();
        }

        public void cargarImagenes(ContentManager content)
        {
            coleccionImagenes.Add("Modelo.CecilioFrente", content.Load<Texture2D>("Imagenes/cecilioFrente"));
            coleccionImagenes.Add("Modelo.CecilioDerecha", content.Load<Texture2D>("Imagenes/cecilioDerecha"));
            coleccionImagenes.Add("Modelo.CecilioIzquierda", content.Load<Texture2D>("Imagenes/cecilioIzquierda"));
            coleccionImagenes.Add("Modelo.CecilioEspalda", content.Load<Texture2D>("Imagenes/cecilioEspalda"));
            coleccionImagenes.Add("Modelo.LopezReggaeDerecha", content.Load<Texture2D>("Imagenes/lopezReggaeDerecha"));
            coleccionImagenes.Add("Modelo.LopezReggaeIzquierda", content.Load<Texture2D>("Imagenes/lopezReggaeIzquierda"));
            coleccionImagenes.Add("Modelo.LopezReggaeFrente", content.Load<Texture2D>("Imagenes/lopezReggaeFrente"));
            coleccionImagenes.Add("Modelo.LopezReggaeEspalda", content.Load<Texture2D>("Imagenes/lopezReggaeEspalda"));
            coleccionImagenes.Add("Modelo.LopezReggaeAladoFrente", content.Load<Texture2D>("Imagenes/lopezReggaeAladoFrente"));
            coleccionImagenes.Add("Modelo.LopezReggaeAladoEspalda", content.Load<Texture2D>("Imagenes/lopezReggaeAladoEspalda"));
            coleccionImagenes.Add("Modelo.LopezReggaeAladoIzquierda", content.Load<Texture2D>("Imagenes/lopezReggaeAladoIzquierda"));
            coleccionImagenes.Add("Modelo.LopezReggaeAladoDerecha", content.Load<Texture2D>("Imagenes/lopezReggaeAladoDerecha"));
        }

        public void Dibujarse(SpriteBatch spriteBatch)
        {
            //Los bordes del mapa son solo visuales, no estan en el modelo. Por eso hay que dibujar a los enemigos correctamente.
            foreach (Enemigo enemigo in enemigos)
            {
                dibujarEnemigo(enemigo, spriteBatch);
            }
        }

        public void dibujarEnemigo(Enemigo enemigo, SpriteBatch spriteBatch)
        {
            string nombreImagen = enemigo.GetType().ToString();
            if (enemigo.getUltDirX() == 1)
            {
                nombreImagen = nombreImagen + "Derecha";
            }
            else if (enemigo.getUltDirX() == -1)
            {
                nombreImagen = nombreImagen + "Izquierda";
            }
            else if (enemigo.getUltDirY() == -1)
            {
                nombreImagen = nombreImagen + "Espalda";
            }
            else
            {
                nombreImagen = nombreImagen + "Frente";
            }
            this.imagen = this.coleccionImagenes[nombreImagen];
            Vector2 posicion = new Vector2(enemigo.getPosX() - enemigo.getTamanio() + 47, enemigo.getPosY() - enemigo.getTamanio() + 97);
            spriteBatch.Draw(this.imagen, posicion, Color.White);
        }

    }
}
